package psn.polaris.html;

import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

public class HtmlSelectFunction {

    /**
     * 根据ID获取标签
     * @param html  被查询节点
     * @param id    Html_id
     * @return      标签节点
     */
    public static Element selectTagById(Element html, String id){
        return html.getElementById(id);
    }

    /**
     * 根据Class获取标签
     * @param html      被查询节点
     * @param className Html_class
     * @return          标签节点集合
     */
    public static Elements selectTagByClass(Element html, String className){
        return html.getElementsByClass(className);
    }

    /**
     * 根据标签名获取标签
     * @param html      被查询节点
     * @param tagName   Html_tagName
     * @return          标签节点集合
     */
    public static Elements selectTagByName(Element html, String tagName){
        return html.getElementsByTag(tagName);
    }

    /**
     * 根据父子标签Id获取节点
     * @param html  被查询节点
     * @param pid   父标签ID
     * @param id    子标签ID
     * @return      标签节点
     */
    public static Element selectTagByIdFromParentId(Element html, String pid, String id){
        Element parent = html.getElementById(pid);
        if(null!=parent){
            return parent.getElementById(id);
        }
        return null;
    }

    /**
     * 根据父子标签Class获取节点
     * @param html          被查询节点
     * @param pclassName    父标签Class
     * @param className     子标签Class
     * @return              标签节点集合
     */
    public static Elements selectTagByClassFromParentClass(Element html, String pclassName, String className){
        Elements parents = html.getElementsByClass(pclassName);
        Elements result = new Elements();
        for (Element parent : parents) {
            result.addAll(parent.getElementsByClass(className));
        }
        return result;
    }

    /**
     * 根据父标签Class-子标签Id获取节点
     * @param html          被查询节点
     * @param pclassName    父标签Class
     * @param id            子标签Id
     * @return              标签节点集合
     */
    public static Elements selectTagByIdFromParentClass(Element html, String pclassName, String id){
        Elements parents = html.getElementsByClass(pclassName);
        Elements result = new Elements();
        for (Element parent : parents) {
            result.add(parent.getElementById(id));
        }
        return result;
    }

    /**
     * 根据父标签Class-子标签Id获取节点
     * @param html          被查询节点
     * @param pid           父标签id
     * @param className     子标签class
     * @return              标签节点集合
     */
    public static Elements selectTagByClassFromParentId(Element html, String pid, String className){
        Element parents = html.getElementById(pid);
        Elements result = new Elements();
        if(null!=parents) {
            result.addAll(parents.getElementsByClass(className));
        }
        return result;
    }

}
